+2004-11-16 Matthias Clasen <mclasen@redhat.com>
+
+ * gtk/gtkcellrenderertext.c (get_layout): Don't use the foreground
+ color for selected cells, Don't use the background color
+ in unfocused selected cells. Also avoid creating two PangoLayouts
+ per render call. (#154615, #154611, Billy Biggs)
+
Mon Nov 15 19:02:07 2004 Manish Singh <yosh@gimp.org>
* gdk/abicheck.sh
+2004-11-16 Matthias Clasen <mclasen@redhat.com>
+
+ * gtk/gtkcellrenderertext.c (get_layout): Don't use the foreground
+ color for selected cells, Don't use the background color
+ in unfocused selected cells. Also avoid creating two PangoLayouts
+ per render call. (#154615, #154611, Billy Biggs)
+
Mon Nov 15 19:02:07 2004 Manish Singh <yosh@gimp.org>
* gdk/abicheck.sh
+2004-11-16 Matthias Clasen <mclasen@redhat.com>
+
+ * gtk/gtkcellrenderertext.c (get_layout): Don't use the foreground
+ color for selected cells, Don't use the background color
+ in unfocused selected cells. Also avoid creating two PangoLayouts
+ per render call. (#154615, #154611, Billy Biggs)
+
Mon Nov 15 19:02:07 2004 Manish Singh <yosh@gimp.org>
* gdk/abicheck.sh
+2004-11-16 Matthias Clasen <mclasen@redhat.com>
+
+ * gtk/gtkcellrenderertext.c (get_layout): Don't use the foreground
+ color for selected cells, Don't use the background color
+ in unfocused selected cells. Also avoid creating two PangoLayouts
+ per render call. (#154615, #154611, Billy Biggs)
+
Mon Nov 15 19:02:07 2004 Manish Singh <yosh@gimp.org>
* gdk/abicheck.sh
* background_area not the PangoLayout area
*/
- if (celltext->foreground_set)
+ if (celltext->foreground_set
+ && (flags & GTK_CELL_RENDERER_SELECTED) == 0)
{
PangoColor color;
}
static void
-gtk_cell_renderer_text_get_size (GtkCellRenderer *cell,
- GtkWidget *widget,
- GdkRectangle *cell_area,
- gint *x_offset,
- gint *y_offset,
- gint *width,
- gint *height)
+get_size (GtkCellRenderer *cell,
+ GtkWidget *widget,
+ GdkRectangle *cell_area,
+ PangoLayout *layout,
+ gint *x_offset,
+ gint *y_offset,
+ gint *width,
+ gint *height)
{
GtkCellRendererText *celltext = (GtkCellRendererText *) cell;
PangoRectangle rect;
- PangoLayout *layout;
GtkCellRendererTextPrivate *priv;
priv = GTK_CELL_RENDERER_TEXT_GET_PRIVATE (cell);
return;
}
- layout = get_layout (celltext, widget, FALSE, 0);
+ if (layout)
+ g_object_ref (layout);
+ else
+ layout = get_layout (celltext, widget, FALSE, 0);
pango_layout_get_pixel_extents (layout, NULL, &rect);
g_object_unref (layout);
}
+
+static void
+gtk_cell_renderer_text_get_size (GtkCellRenderer *cell,
+ GtkWidget *widget,
+ GdkRectangle *cell_area,
+ gint *x_offset,
+ gint *y_offset,
+ gint *width,
+ gint *height)
+{
+ get_size (cell, widget, cell_area, NULL,
+ x_offset, y_offset, width, height);
+}
+
static void
gtk_cell_renderer_text_render (GtkCellRenderer *cell,
GdkDrawable *window,
priv = GTK_CELL_RENDERER_TEXT_GET_PRIVATE (cell);
layout = get_layout (celltext, widget, TRUE, flags);
-
- gtk_cell_renderer_text_get_size (cell, widget, cell_area, &x_offset, &y_offset, NULL, NULL);
+ get_size (cell, widget, cell_area, layout, &x_offset, &y_offset, NULL, NULL);
if (!cell->sensitive)
{
state = GTK_STATE_NORMAL;
}
- if (celltext->background_set && state != GTK_STATE_SELECTED)
+ if (celltext->background_set &&
+ (flags & GTK_CELL_RENDERER_SELECTED) == 0)
{
GdkColor color;
GdkGC *gc;